home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / txl / rexxmdl2.lha / RexModula2 / Txl / rmi.Grammar < prev    next >
Text File  |  1992-02-26  |  2KB  |  114 lines

  1. % Syntax of Rex extended Modula-2 
  2. % Georg Etzkorn, GMD Karlsruhe, 25.2.91
  3.  
  4. % This is a variant of the original Modula-2 grammar
  5. include "Modula2.Grammar"
  6.  
  7. % Now we give the extensions and other differences 
  8.  
  9. % New compound tokens 
  10. compounds
  11.     =>  &&
  12. end compounds
  13.  
  14. % New keywords
  15. keys
  16.     CALL WAIT ACCEPT REPLY SELECT
  17. end keys
  18.  
  19. define statement
  20.     [assignment]
  21.     |   [ProcedureCall]
  22.     |    [CommunicationCall]    % New statement form
  23.     |    [IfStatement]
  24.     |    [CaseStatement]
  25.     |   [SelectStatement]     % New statement form
  26.     |    [WhileStatement]
  27.     |    [RepeatStatement]
  28.     |    [LoopStatement]
  29.     |    [ForStatement]
  30.     |    [WithStatement]
  31.     |    EXIT
  32.     |    RETURN [opt expression]
  33. end define
  34.  
  35. define CommunicationCall
  36.       [CommName]  ( [id] , [ExpList] ) [opt handle]
  37. end define
  38.  
  39. define CommName
  40.         WAIT
  41.     |   ACCEPT
  42.     |   CALL
  43.     |   REPLY 
  44. end define
  45.  
  46. define CommunicationPrimitive
  47.     [DelayStatement]
  48.     |    [AbortStatement]
  49.     |    [ForwardStatement]
  50.     |    [ValidStatement]
  51.     |    [TimeoutStatement]
  52. end define
  53.  
  54. define DelayStatement
  55.        'DELAY ( [expression] )
  56. end define
  57.  
  58. define AbortStatement
  59.          'ABORT ( [qualident] ) [opt handle]
  60. end define
  61.  
  62. define ForwardStatement
  63.     'FORWARD ( [qualident] , [qualident] , [ExpList] ) [opt handle]
  64. end define
  65.  
  66. define ValidStatement
  67.     'VALID ( [qualident] , [expression] )
  68. end define
  69.  
  70. define TimeoutStatement
  71.          'TIMEOUT ( [expression] )
  72. end define
  73.  
  74. define handle
  75.         WITH [id]    
  76. end define
  77.  
  78. % Modified syntax of statement sequences - requires semicolons
  79. % on all statements (to make transforms simpler)
  80. define StatementSequence
  81.     [repeat statement_semi]
  82. end define
  83.  
  84. define statement_semi
  85.     [statement] ;    [NL]
  86. end define
  87.  
  88. % New statement SELECT
  89. define SelectStatement
  90.     SELECT                 [IN][NL]
  91.       [alternative]
  92.       [repeat or_alternative]
  93.       [opt else_StatementSequence]    [EX]
  94.     END                
  95. end define
  96.  
  97. define or_alternative
  98.             [NL]
  99.     '| [alternative]
  100. end define
  101.  
  102. define alternative
  103.     [guard] :         [IN][NL]
  104.         [StatementSequence]    [EX]
  105. end define
  106.  
  107. define guard
  108.         [opt BoolAnd] [CommunicationCall]
  109. end define
  110.  
  111. define BoolAnd
  112.         [expression] && 
  113. end define
  114.